﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using ArmaTuCumpleModel.Repository;
using ArmaTuCumpleModel.Model;

namespace ArmaTuCumpleWeb.Controllers
{
    public class CumpleañosController : Controller
    {
        private RepEventos RepositorioEventos = new RepEventos();

        //
        // GET: /Cumpleaños/

        public ActionResult Index()
        {
            return View();
        }


        //Devuelve la vista de creacion de cumpleaños
        public ActionResult CrearCumpleaños()
        {
            return View("CrearCumpleaños");
        }

        //Recibe los parametros de la creación de cumpleaños
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult AgregarCumpleaños(FormCollection values)
        {
            //Creamos una actividad
            Actividad act = new Actividad();

            DateTime fecha = DateTime.Parse(Request.Form["FechadeRealizacion"]);
            //Vemos si la fecha es futura o pasada
            if (DateTime.Compare(DateTime.Now, fecha) < 0)
            {
                //Asignamos los parámetros que provienen de la vista
                act.id_actividad = Guid.NewGuid();
                act.nombre = Request.Form["NombreActividad"];
                act.confirmado = 0;
                act.fecha_agregado = DateTime.Now;
                act.fecha_realizacion = DateTime.Parse(Request.Form["FechadeRealizacion"]);
                act.descripcion = Request.Form["Descripcion"];
                act.id_contratante = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey;

                //Lo agregamos a la BD y guardamos
                RepositorioEventos.AgregarEvento(act);
                RepositorioEventos.Guardar();

                //Redirigimos la acción
                return RedirectToAction("Index", "MiPagina");
            }
            else
                return RedirectToAction("CrearCumpleaños");
        }

        //Devuelve la vista sobre un detalle de actividad
        public ActionResult Detalles(Guid id)
        {
            //Buscamos la actividad
            Actividad act = RepositorioEventos.ObtenerActividad(id);

            //Retornamos la vista y la actividad
            return View("Detalles", act);

        }


        //Elimina un actividad
        public ActionResult Eliminar(Guid id)
        {
            //Buscamos la actividad
            Actividad act = RepositorioEventos.ObtenerActividad(id);
            //La eliminamos y guardamos
            RepositorioEventos.EliminarEvento(act);
            RepositorioEventos.Guardar();

            //Redirigimos la acción
            return RedirectToAction("VerCumpleaños");

        }


        //Retorna la vista y los cumpleaños del usuario
        public ActionResult VerCumpleaños()
        {
            //Busca la lista de los cumpleaños del usuario
            IQueryable<Actividad> lista = RepositorioEventos.ObtenerProximosEventosUsuario((Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey);
            //Retorna la vista y los cumpleaños
            return View(lista);

        }

        //Retorna los cumpleaños pasados de un usuario
        public ActionResult VerCumpleañosPasados()
        {
            //Busca los cumpleaños que ya han pasado
            IQueryable<Actividad> lista = RepositorioEventos.ObtenerEventosPasadosUsuario((Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey);
            //Retorna la lista y la vista
            return View("VerCumpleañosPasados", lista);
        }
        //Muestra todos los servicios contratados anteriormente
         public ActionResult VerServiciosPasados()
         {
             IQueryable<Actividad> lista = RepositorioEventos.ObtenerEventosPasadosUsuario((Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey);

             return View("VerServiciosPasados", lista);
         }

         public ActionResult VerServiciosFuturos()
         {
             IQueryable<Actividad> lista = RepositorioEventos.ObtenerProximosEventosUsuario((Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey);
             return View("VerServiciosFuturos", lista);
         }
        //Devuelve los servicios futuros del usuario
         public ActionResult ServiciosFuturos()
         {
             IQueryable<Actividad> lista = RepositorioEventos.ObtenerProximosEventosUsuario((Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey);
             return View("ServiciosFuturos", lista);
         }








        //Retorna lo necesario para modificar
        public ActionResult Modificar(Guid id)
        {
            //Busca la actividad requerida
            Actividad act = RepositorioEventos.ObtenerActividad(id);
            //La retona junto con la vista
            return View("Modificar", act);
        }



        //Recibe los argumentos de la vista para el modificado
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Modificar(Guid id, FormCollection formvalues)
        {
            //Obtenemos la actividad
            Actividad act = RepositorioEventos.ObtenerActividad(id);
            //Actualizamos los datos
            UpdateModel(act, formvalues);
            //Guardamos
            RepositorioEventos.Guardar();
            //Retornamos la vista
            return RedirectToAction("VerCumpleaños");

        }


    }
}